import ApplyInteractableObjectLocationMessageHandler from "@runtime/module/Handler/Base/ApplyInteractableObjectLocationMessageHandler";
import DeviceUpdateMessageHandler from "@runtime/module/Handler/Base/DeviceUpdateMessageHandler";
import InteractableObjectCheckedMessageHandler from "@runtime/module/Handler/Base/InteractableObjectCheckedMessageHandler";
import LabelUpdateMessageHandler from "@runtime/module/Handler/Base/LabelUpdateMessageHandler";
import LoadAllAssetProgressMessageHandler from "@runtime/module/Handler/Base/LoadAllAssetProgressMessageHandler";
import TooltipHideMessageHandler from "@runtime/module/Handler/Base/TooltipHideMessageHandler";
import TooltipShowMessageHandler from "@runtime/module/Handler/Base/TooltipShowMessageHandler";
import WebSocketComponent from "@runtime/module/WebSocket/WebSocketComponent";
import { ClientOpcode } from "../message/ClientOpcode";
import IntelligentConnectedVehicleInstallationCompleteMessageHandler from "@runtime/module/Handler/BinocularCamera/IntelligentConnectedVehicleInstallationCompleteMessageHandler";
import MillimeterWaveRadarGizmosDimensionUpdateMessageHandler from "@runtime/module/Handler/MillimeterWaveRadar/MillimeterWaveRadarGizmosUpdateMessageHandler";
import MillimeterWaveRadarObjectInformationUpdateMessageHandler from "@runtime/module/Handler/MillimeterWaveRadar/MillimeterWaveRadarObjectInformationUpdateMessageHandler";
import MillimeterWaveRadarProtocolDataUpdateMessageHandler from "@runtime/module/Handler/MillimeterWaveRadar/MillimeterWaveRadarProtocolDataUpdateMessageHandler";
import MillimeterWaveRadarBaseInformationUpdateMessageHandler from "@runtime/module/Handler/MillimeterWaveRadar/MillimeterWaveRadarBaseInformationUpdateMessageHandler";
export default class ClientMessageHandlerLoader {
    private static instance: ClientMessageHandlerLoader = new ClientMessageHandlerLoader();
    /**
     * 请求处理加载器
     */
    public static get Default(): ClientMessageHandlerLoader {
        return this.instance;
    }

    public Load(): void {
        WebSocketComponent.Default.Register(ClientOpcode.ApplyInteractableObjectLocationMessage, new ApplyInteractableObjectLocationMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.InteractableObjectCheckedMessage, new InteractableObjectCheckedMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.LabelUpdateMessage, new LabelUpdateMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.LoadAllAssetProgressMessage, new LoadAllAssetProgressMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.TooltipShowMessage, new TooltipShowMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.TooltipHideMessage, new TooltipHideMessageHandler());

        WebSocketComponent.Default.Register(ClientOpcode.DeviceUpdateMessage, new DeviceUpdateMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.IntelligentConnectedVehicleInstallationCompleteMessage, new IntelligentConnectedVehicleInstallationCompleteMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.MillimeterWaveRadarGizmosUpdateMessage, new MillimeterWaveRadarGizmosDimensionUpdateMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.MillimeterWaveRadarObjectInformationUpdateMessage, new MillimeterWaveRadarObjectInformationUpdateMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.MillimeterWaveRadarProtocolDataUpdateMessage, new MillimeterWaveRadarProtocolDataUpdateMessageHandler());
        WebSocketComponent.Default.Register(ClientOpcode.MillimeterWaveRadarBaseInformationUpdateMessage, new MillimeterWaveRadarBaseInformationUpdateMessageHandler());
    }
} 